/*26/09 18:38
 * Rotta Damián, Klikailo Héctor
 */
package Logica;
import Excepciones.YaExiste;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
public class Planilla {
    private boolean estado;
    private Map<String,Personal> personal= new HashMap();
    private List<Renglon> renglones;

    public Planilla() {
        this.estado=true;
        
        this.renglones= new LinkedList();
    }
   
    public Planilla(Map<String,Personal>personal, List<Renglon> renglones) {
        this.renglones=renglones;
        this.estado= true;
        this.personal=personal;
    }
    

    public boolean isEstado() {
        return estado;
    }

    public void setEstado(boolean estado) {
        this.estado = estado;
    }
    public void bajaPlanilla(){
        this.estado=false;
    }

    public Map<String, Personal> getPersonal() {
        return personal;
    }

    public void setPersonal(Map<String, Personal> personal) {
        this.personal = personal;
    }
   
    public Personal altaPersona(String apellido, String nombre, String dni, String rol) throws YaExiste{
          Personal unPersonal;     
          if(!personal.containsKey(dni)){
              unPersonal = new Personal(apellido,nombre,dni,rol);
              personal.put(dni,unPersonal);
             }
          else{
            throw new YaExiste("La persona con dni",dni,"ya está registrada");}
        return unPersonal;
    }
    public boolean existePersonal (String dni){
        Personal unPersonal;
        boolean retorno=false;
        if(personal.containsKey(dni))            
            retorno=true;
        else
            System.out.println("No se ha encontrado");
        return retorno;
    }
    
    public int calcularHs(String dni) {
        Personal unPersonal=null;
        int retorno=0;
        if(this.existePersonal(dni))
           unPersonal=buscarPersonal(dni);
            if(unPersonal!=null)
                retorno=this.calcularHs(unPersonal);
            else
                System.out.println("No se encontro el personal");
        return retorno;
        
    }
    
    public int calcularHs(Personal unPersonal){
        int aux=0;
        Iterator<Renglon> it = this.renglones.listIterator();
        while (it.hasNext()){
           Renglon unRenglon = (Renglon) it.next();
           if(unRenglon.isDni(unPersonal.getDni()))
               aux+=unRenglon.calcularHs();
        }
        return aux;
    }
            
    
    public Personal buscarPersonal(String dni){ 
        Personal unPersonal, retorno=null;   
        Iterator it = personal.entrySet().iterator();
        while(it.hasNext()){
            Map.Entry aux = (Map.Entry) it.next();
            unPersonal =(Personal) aux.getValue();
            if (unPersonal.isDni(unPersonal.getDni()))
                retorno = unPersonal;
        }
        return retorno;
    }

    public List<Renglon> getRenglones() {
        return renglones;
    }

    public void setRenglones(List<Renglon> renglones) {
        this.renglones = renglones;
    }

    void altaRenglon(Personal unaPersona, Date fecha, int MinutosEnt, int  MinutosSal) {
        String DNI = unaPersona.getDni();
        Renglon unRenglon = new Renglon(fecha, MinutosEnt, MinutosSal, DNI);
        renglones.add(unRenglon);
            
            //To change body of generated methods, choose Tools | Templates.
    }
    
    
}
